import java.util.Scanner;

public class Main {

    //买瓜
    private static int n;          // 瓜的个数
    private static int m;          // 需要的重量（已乘2）
    private static int[] w;        // 物品价格数组（已乘2）
    private static int res = 31;

    // pos: 当前处理物品下标
    // M: 当前累计重量
    // cnt: 劈瓜次数
    private static void dfs(int pos, long M, int cnt) {
        if (M > m) return ;  // 重量超出目标
        if (M == m) {              // 刚好得到目标重量
            res = Math.min(res,cnt);
            return ;
        }
        if (pos == n) return ;        // 处理完所有瓜
        // 三种选择：不买、买半个、买整个
        dfs(pos + 1, M, cnt);// 不买
        dfs(pos + 1, M + w[pos] / 2, cnt + 1);// 买一半(劈一次)
        dfs(pos + 1, M + w[pos], cnt);// 买整个(不劈)

    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        n = scanner.nextInt(); //输入有多少个瓜
        m = scanner.nextInt() * 2;  // 目标重量*2
        w = new int[n]; //摊位中每个瓜的重量
        for (int i = 0; i < n; i++) {
            w[i] = scanner.nextInt() * 2;  // 重量*2处理
        }
        dfs(0, 0, 0);

        System.out.println(res == 31 ? -1 : res);
    }
}
